密码学理论知识
Crypto理论
一、密码学概论
二、古典密码
1 置换加密
定义:字符的位置与其他字符发生变换。
2 代换加密
定义:字符用其他字符代替。
3 词频分析
三、信道通信
四、现代密码
1 序列密码
1.1 原理
定义:序列密码又称流密码(同函数不同密钥)。
优势:
- 硬件实现简单。
- 可以逐个字符处理。
- 有较理想的数学分析工具。
用处:军事,外交等国家重要部门的保密通信。
过程:先由密钥生成一个密钥流序列,再依次加密:
- 明文流:M = m1m2m3…mi…
- 密钥流:K = k1k2k3….ki…
- 加密算法:C=c1c2c3…ci… = Ek1(m1)Ek2(m2)….
- 解密算法:M=m1m2m3…mo… = Dk1(c1)Dk2(c2)…
设计:序列密码的设计重点是密钥流生成器。
1.2 分类
自同步流密码
异步流密码
1.3 案例
A5算法:
RC4算法(RC4密码。算法原理RC4算法是一种流密码,密钥长度可变,面向字节操作。以下是原理说明中使用的主要变量。):
密钥流:RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说,如果明文的长度是500字节,那么密钥流的长度也是500字节,加密生成的密文也是500字节,因为密文第i字节=明文第i字节⊕密钥流第i字节。
状态数组S:长度为256字节,各单元为S[0],S[1],…,S[255]。每个单元为1字节,在算法运行的任何时候,S都包括0~255之间所有的8位二进制数,只不过值的位置发生了变化。
临时数组T:长度为256字节,每个单元为1字节。如果密钥的长度是256字节,就直接把密钥的值赋给T,否则轮转地将密钥的每字节赋给T。
密钥K:长度为1~256字节,密钥的长度与明文的长度、密钥流的长度没有必然关系,通常密钥的长度为16字节(128位)。
密钥流Ks:由从S的256个单元中按一种系统化的方式选出的一个单元生成,每生成一个Ks,S中的单元就被重新置换一次。
RC4算法首先使用密钥编排算法(Key Scheduling Algorithm,KSA)来完成S和T的初始化及S的初始置换。在置换时使用密钥K,其长度一般取5~16字节,即40~128位,也可以更长,通常不超过256字节。首先用0~255初始化S,然后使用密钥进行替换。
完成S的初始化和初始置换后,密钥K就不再被使用了。在S[0],S[1],…,S[255]中,对每个S[I],根据S的当前配置,将S[I]与另一字节置换,输出1字节的密钥流。当S[255]完成置换后,从S[0]开始进行重复操作。
RC4算法流程:
初始化S
随机序列生成
2 分组密码
2.1 原理
2.2 案例
DES算法原理:
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。
DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。
密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。
AES
3 Hash密码
性质:
- 抗碰撞。
- 不可逆。
4 公钥密码
4.1 案例
RSA:
原理:大质数的分解。
RSA过程:
- 质数p q … 任取(可以不止两个)
- n = p q …
- φ( n ) = ( p - 1 ) ( q - 1 ) …
- gcd( e , φ( n ) ) = 1 ,e为公钥,任取小于φ(n)的数
- d = e^-1 mod φ( n ),d为私钥
- c = pow( m , e , n ) ,c = m ** e % n
- m = pow ( c , d , n ),m = c ** d % n
ECC:
五、数字签名
六、身份认证
1 HMAC
hmac主要应用在身份验证中
HAMC流程:
- 客户端发出登录请求。(假设是浏览器的GET请求)
- 服务器返回一个随机值,并在会话中记录这个随机值 。
- 客户端将该随机值作为密钥,用户密码进行hmac运算,然后提交给服务器。
- 服务器读取用户数据库中的用户密码和步骤2中发送的随机值做与客户端一样的hmac运算,然后与用户发送的结果比较,如果结果一致则验证用户合法。
七、密钥管理
八、破译思路
1 简单识别思路
- 看密文位数
- 看密文特征(字符串头,组成部分,特殊符号,结构等)
- 看密文出现的地方(Web、数据库、操作系统等地方)